<?php
namespace app\O_forum_back\controller;
use app\BaseController;
use think\facade\Db;
use think\facade\Filesystem;
use app\Request;
class Advdeal extends BaseController
{
    public function Advdeal()
    {  
        // O组检查登录状态
		$this -> checkB();
        // O组1903010227 查询o_adv表所有数据并返回
        $advdeal = Db::name('adv')
				 -> select();
				 
       return view('',['advdeal'=>$advdeal]);
    }

    public function advAdd()
    { 
        // O组检查登录状态
		$this -> checkB();
        return view();
    }
    public function advDoAdd()
    {  
        // O组检查登录状态
		$this -> checkB();
	    
		// O组1903010227 获取临时存放图片的内容
        $fileName = request()->file("aimg");
        // O组190310227 上传到本地服务器（地址在config中view.php定义的，对外名称为public）
		$saveName = Filesystem::disk('public')->putFile('',$fileName);
		
		// O组1903010227 获取用户输入的广告信息
		$advtitle=input('atitle');
		$advcontent=input('acontent');
		$apath=input('apath');
		
		// O组1903010227 配置数组信息
		$data= ['atitle' => $advtitle, 'acontent' => $advcontent,'apath' => $apath,
				'atime' => time(),'acheck' => 0,'astop' => 1,'atype' => 0,'aimg'=>$saveName];
	   
	    // O组1903010227 将数据插入数据库当中
		$result = Db::name('adv')
			 ->insert($data);
		
		// O组1903010227 更改插入的返回值，提示插入成功或者失败
        if ($result) {
                $this->success("广告数据添加成功，需要进行审核才能正常使用","advdeal/advdeal");
        }
        else{
                $this->error("广告数据添加失败","advdeal/advdeal");
            }
    }
	
	
    public function advInfo()
    {  
       // O组检查登录状态
      $this -> checkB();
	 
	 // O组1903010227 根据advdeal的修改的aid信息查询o_adv表中的数据信息并返回给advinfo页面
       $advInfo = Db::name('adv')
				->where('aid',input('aid'))
				->select();

        return view('',["advInfo"=>$advInfo]);

    }
	
    public function advInfoModi()
    {  
        // O组193010227检查登录状态
		$this -> checkB();
		
		// O组193010227 根据aid在o_adv表中获取要修改的数据信息
		$advInfoModi = Db::name('adv')
             ->where('aid',input('aid'))
             ->find();
		// O组1903010227 获取数据库已经存在的图片信息
        $aimg=$advInfoModi['aimg'];
		
		// O组1903010227 判断是否有新的图片更换 0为无更换，1为有更换
	    $flag = 0;
		// O组1903010227 判断用户是否需要更改图片，
	
		if(empty($_FILES['aimg']["tmp_name"])){
			// O组1903010227 不需要更改则直接使用数据库的已经存在的图片，
			$saveName =  $aimg;
			
		}else{
			// O组1903010227 否则获取用户要修改的图片信息
			$fileName = request()->file("aimg");
			$saveName = Filesystem::disk('public') -> putFile('',$fileName);
			$flag = 1;
		}
		
		// O组1903010227 获取用户需要修改的内容
		$advtitle=input('atitle');
		$advcontent=input('acontent');
		$apath=input('apath');
		
		// O组1903010227 更新用户需要修改的内容
		$upavdinfo = Db::name('adv')
				   ->where('aid',input('aid'))
				   ->update(['atitle' => $advtitle,'acontent' => $advcontent,
							 'apath' => $apath,'atime' => time(),
							 'acheck' => 0,'aimg' => $saveName]);
		
		// O组1903010227 数据库内容修改成功
		if ($upavdinfo) {
		    $old_img = app()->getRootPath() . 'public/static/O_forum_back/upload' . '/' . $aimg;
		    
			// O组1903010227 当旧图片在本地的指定目录存在时和已添加新的图片就将旧图片删除
			if(file_exists($old_img) and $flag){
				// O组1903010227 删除旧图片
		        unlink($old_img);
		    }
			
		    $this->success("广告数据修改成功，需要进行审核才能正常使用","advdeal/advdeal");
		}else{
			$this->error("广告数据修改失败","advdeal/advdeal");
	    }
    }
	
	
    public function advDel()
    {  
        // O组检查登录状态
		// $this -> checkB();
		
		// O组1903010227 在o_adv表中查询要删除的图片信息
        $advDel_img = Db::name('adv')
				    ->where('aid',input('aid'))
					->find();
		// O组1903010227 将图片信息赋值
        $aimg=$advDel_img['aimg'];
		
		// O组1903010227 在o_adv表中删除对应的aid号的信息
        $advdel = Db::name('adv')
				->where('aid',input('aid'))
				->delete();
		
		// O组1903010227 判断在数据库中的删除是否成功执行，成功执行就将刚刚获取的图片信息进行删除的操作
        if ($advdel) {
                // O组1903010227 获取本地的图片信息
                $path=app()->getRootPath() . 'public/static/O_forum_back/upload' . '/' . $aimg;
                
				// O组1903010227 判断图片是否在本地的目录中存在，存在则删除
				if(file_exists($path)){
					// O组193010227 删除图片
					unlink($path);
                }
                $this ->success('删除广告成功',"advdeal/advdeal");
        }
        else{
                $this ->error('删除广告失败',"advdeal/advdeal");
        }

    }
    // O组审核广告
    public function advOK()
    {  
        // O组检查登录状态
		$this -> checkB();
        // O组1903010227 获取审核状态
        $check_status = Db::view('adv','acheck')
                 ->where('aid',input('aid'))
                 ->select();
        // O组1903010227 判断广告是否已经通过审核
        if ($check_status[0]['acheck'] == 1) {
			// O组1903010227 通过的广告审核将其取消
			// O组1903010227 根据advdeal的aid信息查询o_adv表中对应aid的更改acheck跟astop的数据信息
            $upcs = Db::name('adv')
                    ->where('aid',input('aid'))
                    ->update(['acheck' => 0,'astop'=>1]);
			// O组1903010227 根据更改的信息成功或失败显示对应的提示信息给用户
            if($upcs == 1){
                $this->success('广告审核已取消','advdeal/advdeal');
            }else{
                $this->error('操作失败，请重试！','advdeal/advdeal');}
        }else{
            // O组1903010227 该广告还未通过审核 将其通过操作
			// O组1903010227 根据advdeal的aid信息查询o_adv表中对应aid的更改acheck跟astop的数据信息
            $upcs = Db::name('adv')
                ->where('aid',input('aid'))
                ->update(['acheck'=>1,'astop'=>0]);
			// O组1903010227 根据更改的信息成功的信息显示对应的提示信息给用户
            if ($upcs == 1) {
                // O组1903010227 审核通过
                $this ->success('广告审核通过',"advdeal/advdeal");}
			}
    }
	
    // O组暂停显示
    public function advStop()
    {  
        // O组检查登录状态
     // $this -> checkB();
	 
        //O组1903010227 获取显示状态和审核状态，若审核未通过，则不能执行该功能
        $acheck = Db::name('adv')
				  ->where('aid',input('aid'))
				  ->find();
        $acheck = $acheck['acheck'];

        if($acheck == 0){
            $this->error('审核未通过，无法执行该功能！',"advdeal/advdeal");
        }
		else{
			// O组1903010227 审核通过
			// O组1903010227 根据advdeal的aid信息查询o_adv表中对应aid的astop的数据信息
            $astop = Db::name('adv')
				   ->where('aid',input('aid'))
                   ->select();
		
	
            // O组1903010227 判断是否在前台显示
            if ($astop[0]['astop'] == 1) {
                // O组1903010227 更新adv表中的astop数据使得广告正常显示
                $avdstmodi = Db::name('adv')
					  ->where('aid',input('aid'))
					  ->update(['astop'=>0]);
				// O组1903010227 更新完数据库中数据后返回提示信息给用户
                if ($avdstmodi == 1) {
                    $this ->success('广告取消暂停，广告正常显示',"advdeal/advdeal");
                     
                 } 
            }
            else{
                // O组1903010227 更新adv表中的astop数据使得广告不在前台显示
                $avdstmodi = Db::name('adv')
					  ->where('aid',input('aid'))
					  ->update(['astop'=>1]);
				// O组1903010227 更新完数据库中数据后返回提示信息给用户
                if ($avdstmodi == 1) {
                     $this ->error('广告暂停使用,无法正常显示',"advdeal/advdeal");
                 } 

            }
        }
        
    }
    public function boxDeal()
    {  
        // O组检查登录状态
     // $this -> checkB();
       
	    // O组1903010227 获取box表中的所有数据
		$box = Db::name('box')
		     ->select();
       return view('',['box'=>$box]);
    }

    public function boxAdd()
    { 
        // O组1903010227 检查登录状态
     // $this -> checkB();
       return view();
    }

    public function boxDoAdd()
    {  
        // O组检查登录状态
     // $this -> checkB();
	   
	   // O组1903010227 获取临时存放图片的内容
        $fileName = request()->file("aimg");
	   
       // 存储到指定路径
       // O组190310227 上传到本地服务器（地址在config中view.php定义的，对外名称为public）
        $saveName = Filesystem::disk('public')->putFile('',$fileName);
       
	   	// O组1903010227 获取用户需要修改的内容
        $boxtitle=input('atitle');
        $boxcon=input('acontent');
        $boxpath=input('apath');
  
       // O组1903010227 配置数组信息
	    $data= ['atitle'=>$boxtitle,'acontent'=>$boxcon,'aimg'=>$saveName,
				'apath'=>$boxpath,'atime'=>time(),'acheck'=>0,'astop'=>1,'atype'=>1];
		 // O组1903010227 将数据插入数据库当中
		$res = Db::name('box')
			->insert($data);
		// O组1903010227 更改插入的返回值，提示插入成功或者失败
		if ($res) {
			$this->success("轮播图数据添加成功，需要进行审核才能正常使用","advdeal/boxdeal");
			}
		else{
			
			$this->error("轮播图数据添加失败","advdeal/boxdeal");
		}
        
    }
    public function boxInfo()
    {  
       // O组检查登录状态
     // $this -> checkB();
	 
	  // O组1903010227 根据boxdeal的修改的aid信息查询o_box表中的数据信息并返回给boxinfo页面
       $box = Db::name('box')
			->where('aid',input('aid'))
			->select();

        return view('',["box"=>$box]);

    }
    public function boxInfoModi()
    {  
        // O组检查登录状态
     // $this -> checkB();
		
		// O组193010227 根据aid在o_box表中获取要修改的数据信息
        $box = Db::name('box')
			 ->where('aid',input('aid'))
			 ->find();
			 
		// O组1903010227 获取数据库已经存在的图片信息	
        $aimg=$box['aimg'];
        // O组1903010227 判断是否有新的图片更换
        $flag = 0;
		// O组1903010227 判断用户是否需要更改图片，
	    if(empty($_FILES['aimg']["tmp_name"])){
			// O组1903010227 不需要更改则直接使用数据库的已经存在的图片，
			$saveName =  $aimg;
		
	    }else{
			// O组1903010227 否则获取用户要修改的图片信息
		    $file = request()->file("aimg");
		    $saveName = Filesystem::disk('public') -> putFile('',$file);
		    $flag = 1;
	   }
       		
       // O组1903010227 获取用户需要修改的内容
       $boxtitle=input('atitle');
       $boxcon=input('acontent');
       $boxpath=input('apath');
       
	   // O组1903010227 更新用户需要修改的内容
	   $box = Db::name('box')
			->where('aid',input('aid'))
			->update(['atitle'=>$boxtitle,'acontent'=>$boxcon,'aimg'=>$saveName,'apath'=>$boxpath,'atime'=>time(),
			'acheck'=>0]);
		// O组1903010227 数据库内容修改成功
		if ($box) {
			$old_img=app()->getRootPath() . 'public/static/o_forum_back/upload' . '/' . $aimg;
			// O组1903010227 当旧图片在本地的指定目录存在时和已添加新的图片就将旧图片删除
			if(file_exists($old_img) and $flag){
				unlink($old_img);
			}
			$this->success("轮播图数据修改成功，需要进行审核才能正常使用","advdeal/boxdeal");
			}
		else{
			
			$this->error("轮播图数据修改失败","advdeal/advdeal");
		}

    }
    public function boxDel()
    {  
        // O组检查登录状态
     // $this -> checkB();
		
		// O组1903010227 在o_adv表中查询要删除的图片信息
        $boxDel_img = Db::name('box')
        ->where('aid',input('aid'))
        ->find();

		// O组1903010227 将图片信息赋值
        $aimg=$boxDel_img['aimg'];
		
		// O组1903010227 在o_box表中删除对应的aid号的信息
        $advdel = Db::name('box')
                ->where('aid',input('aid'))
                ->delete();
		// O组1903010227 判断在数据库中的删除是否成功执行，成功执行就将刚刚获取的图片信息进行删除的操作
        if ($advdel) {
				// O组1903010227 获取本地的图片信息
                $path=app()->getRootPath() . 'public/static/O_forum_back/upload' . '/' . $aimg;
                // O组1903010227 判断图片是否在本地的目录中存在，存在则删除
				if(file_exists($path)){
					// O组193010227 删除图片
					unlink($path);
                }
                
                $this ->success('删除轮播图成功',"advdeal/boxdeal");
            }
            else{
                $this ->error('删除轮播图失败',"advdeal/boxdeal");
            }

    }

    public function boxOk()
    {  
        // O组检查登录状态
     // $this -> checkB();
	 
	   // O组1903010227 获取审核状态
        $boxcheck = Db::view('box','acheck')
				  ->where('aid',input('aid'))
				  ->find();
				  
		// O组1903010227 判断广告是否已经通过审核
        if ($boxcheck['acheck']==0) {
			// O组1903010227 该广告还未通过审核 将其通过操作
			// O组1903010227 根据boxdeal的aid信息查询o_box表中对应aid的更改acheck跟astop的数据信息
            $boxmodi = Db::name('box')
					 ->where('aid',input('aid'))
					 ->update(['acheck'=>1,'astop'=>0]);
			// O组1903010227 根据更改的信息成功的信息显示对应的提示信息给用户
            if ($boxmodi) {
                 $this ->success('轮播图审核通过',"advdeal/boxdeal");
             } 
        }
        else{
			// O组1903010227 通过的广告审核将其取消
			// O组1903010227 根据boxdeal的aid信息查询o_box表中对应aid的更改acheck跟astop的数据信息
            $boxmodi = Db::name('box')
					 ->where('aid',input('aid'))
					 ->update(['acheck'=>0,'astop'=>1]);
			// O组1903010227 根据更改的信息成功的信息显示对应的提示信息给用户
            if ($boxmodi) {
                 $this ->error('轮播图审核取消，无法正常显示',"advdeal/boxdeal");
             } 

        }
    

    }
    public function boxStop()
    {  
        // O组检查登录状态
     // $this -> checkB();
	 
		//O组1903010227 获取显示状态和审核状态，若审核未通过，则不能执行该功能
        $boxcheck = Db::name('box')
				  ->where('aid',input('aid'))
				  ->find();
		// O组1903010227 未通过
        if($boxcheck['acheck']==0){
            $this->error('审核未通过，禁止使用该功能','advdeal/boxdeal');
        }
        
		 // O组1903010227 判断是否在前台显示
        if ($boxcheck['astop']==0) {
			// O组1903010227 更新adv表中的astop数据使得广告不在前台显示
            $boxmodi = Db::name('box')
				     ->where('aid',input('aid'))
				     ->update(['astop'=>1]);
			// O组1903010227 更新完数据库中数据后返回提示信息给用户
            if ($boxmodi) {
                 $this ->success('轮播图暂停使用,无法正常显示',"advdeal/boxdeal");
             } 
        }
        else{
			// O组1903010227 更新adv表中的astop数据使得广告正常显示
            $boxmodi = Db::name('box')
					 ->where('aid',input('aid'))
					 ->update(['astop'=>0]);
			// O组1903010227 更新完数据库中数据后返回提示信息给用户
            if ($boxmodi) {
                 $this ->error('轮播图取消暂停，广告正常显示',"advdeal/boxdeal");
             } 

        }
    }
	
	
}